home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-04 / bcf7713b.zip / LIES.TXT < prev   
Text File  |  1991-03-18  |  13KB  |  411 lines

  1.     ------------------------------------------------
  2.     |             BC-FORTRAN77 Vers.1.3b           |
  3.     |  Copyright: Andre Koestli                    |
  4.     |     1990    Martin-Luther-Str.63             |
  5.     |             D7000 Stuttgart 50               |
  6.     |----------------------------------------------|
  7.     |----------------------------------------------|
  8.     | Die Version "b" von BC-FORTRAN77, bestehend  |
  9.     | aus den nachfolgend beschriebenen 5 Dateien, |
  10.     | ist vollstaendig von mir programmiert. Ich   |
  11.     | gestatte freies Nutzungsrecht an Vers.b fuer |
  12.     | nichtkommerzielle Anwendungen, alle Rechte   |
  13.     | bleiben jedoch bei mir, insbesondere ist der |
  14.     | Verkauf der Vers.b, auch im Zusammenhang mit |
  15.     | anderen Produkten, nicht erlaubt. Jeder Ko-  |
  16.     | pie ist dieser Text unveraendert beizufuegen.|
  17.     | Die Anwendung fuer militaerische Zwecke oder |
  18.     | entsprechende Forschung ist verboten!        |
  19.     | Juli 1990                         A.Koestli  |
  20.     ------------------------------------------------
  21.  
  22.  
  23. BC-FORTRAN77 Version.b besteht aus Compiler, Linker,
  24. Modulbibliothek und einem residenten Laufzeitsystem, das
  25. u.a. einen einfachen Debugger enthaelt. Diese Version
  26. laeuft auf einem MS-DOS Rechner mit 640kB RAM. Eine
  27. Festplatte ist nicht erforderlich. Hiermit soll in
  28. einfacher Weise ein Compiler fuer Programmierkurse 
  29. zur Verfuegung stehen. Dem kommt entgegen, dass
  30. entsprechende Compiler fuer ATARI ST und AMIGA existieren.
  31.  
  32. Anfragen nach Zusendung einer anderen oder neueren Version
  33. werde ich nur noch beantworten, wenn DM 20.- (Schein oder 
  34. Scheck) Aufwandsentschaedigung (Diskette, Umschlag, Porto
  35. und Zeit) beigefuegt sind. Ich versende ausschliesslich
  36. 3 1/2 Zoll Disketten.
  37.  
  38.  
  39.  
  40. BC-FORTRAN77 Vers.b besteht aus folgenden Dateien:
  41.  
  42.     LIES.TXT    Dieser Text
  43.     BCF.EXE     Compiler
  44.     BCL.EXE     Linker
  45.     BCRTSY.EXE  Residentes Laufzeitsystem.
  46.     LIB.B       Bibliothek mit Standardfunktionen
  47.  
  48. Wird eine Kopie angefertigt, muessen immer alle Dateien
  49. unveraendert uebernommen werden.
  50.  
  51.  
  52.  
  53. Installation.
  54. -------------
  55.  
  56. BEVOR Compiler, Linker oder ein damit erzeugtes Programm
  57. gestartet wird, MUSS das residente Laufzeitsystem
  58. geladen sein. Dazu startet man das Programm BCRTSY.EXE.
  59. Soll BC-FORTRAN77 regelmaessig verwendet werden, so 
  60. empfiehlt es sich, BCRTSY.EXE im AUTOEXEC.BAT zu starten.
  61.  
  62. Die *.EXE Dateien werden in eine Directory kopiert, die
  63. im PATH enthalten ist, die Datei LIB.B gehoert in eine
  64. APPEND Directory (siehe die MS-DOS Befehle PATH und
  65. APPEND).
  66.  
  67.  
  68. Compiler
  69. --------
  70.  
  71. Der Compiler wird gestartet mit
  72.  
  73.     BCF [-Option...] Datei...
  74.  
  75. Enthaelt Datei keinen Punkt, so wird .F angehaengt.
  76. Die uebersetzte Form der Programme wird in Datei.B
  77. abgelegt.
  78.  
  79. Beispiel:
  80.  
  81.     BCF -D TEST.F
  82.  
  83. Uebersetzt TEST.F mit Debug-Option nach TEST.B
  84.  
  85.     BCF TEST SUB
  86.  
  87. Uebersetzt TEST.F nach TEST.B und SUB.F nach SUB.B
  88.  
  89.     BCF TEST.X
  90.  
  91. uebersetzt TEST.X nach TEST.B
  92.  
  93.  
  94. Compiler Optionen
  95. -----------------
  96.  
  97. Statt -Option kann auch /Option verwendet werden.
  98.  
  99.     -D      Debug, fasst -BVL zusammen.
  100.  
  101.     -B      deBugcode, impliziert -H und erzeugt
  102.                 ausserdem Code fuer Debuggeraufrufe,
  103.                 zum Ueberpruefen von Feldgrenzen und
  104.                 Substrings.
  105.  
  106.     -H      parcHeck, Code zum Ueberpruefen der Parameter-
  107.                 listen und auf Stackueberlauf erzeugen.
  108.  
  109.     -V      Varlist: Variablenliste fuer Debugger.
  110.  
  111.     -L      Lineslist: Zeilennummernliste fuer Debugger.
  112.  
  113.     -U      Uppercase: Klein- in Grossbuchstaben wandeln
  114.                 (ausser in Characterkonstanten und
  115.                 Formaten). Fehlt diese Option, so sind
  116.                 xy, XY, Xy und xY vier verschiedene
  117.                 Variablen!
  118.  
  119.     -F      Freeinput: Quellprogramm nicht im FORTRAN
  120.                 Format. Nichtstandart!
  121.  
  122.     -P      Protokoll: Ausgabe der uebersetzten Zeilen.
  123.  
  124.     -S      Kurzprotokoll: (Short) eine Zeile pro Modul
  125.                 mit groesse Stackframe und Code (Bytes).
  126.  
  127.     -O      One: Nur einen Ausgabefile erzeugen, mit dem
  128.                 Namen des ersten Eingabefiles.
  129.  
  130.  
  131.  
  132. Sprachumfang
  133. ------------
  134.  
  135. BC-FORTRAN77 uebersetzt den vollstaendigen Standard nach
  136. ANSI/ISO. Der Sprachstandard wird allerdings durch
  137. einige Besonderheiten verletzt (meistens werden diese
  138. als Erweiterungen bezeichnet). Ich empfehle dringend,
  139. diese Dialektkonstrukte nicht zu verwenden, da sie nicht
  140. standardisiert und damit nicht genau definiert sind.
  141.  
  142. Die wichtigsten dieser Besonderheiten:
  143.  
  144.     INTEGER*1       8 bit INTEGER
  145.     INTEGER*2      16 bit INTEGER
  146.     INTEGER*4      wie INTEGER
  147.     LOGICAL*1       8 bit LOGICAL
  148.     LOGICAL*2      16 bit LOGICAL
  149.     LOGICAL*4      wie LOGICAL
  150.     IMPLICIT NONE  abschalten der impliziten Typdef.
  151.     COMMON /%adr/  Absoluter Common, adr ist Konstante
  152.                         oder einfache Variable die die
  153.                         Segmentadresse angibt.
  154.     EQUIVALENCE()  zwischen Character und anderen Typen
  155.                         sowie Mischen im Common.
  156.     Rekursive Unterprogrammaufrufe.
  157.     Namen mit max. 8 Zeichen (Standart: 6).
  158.  
  159.  
  160. Als wichtigste Beschraenkungen gibt es:
  161.  
  162.     32kB Code+SAVE/DATA pro Unterprogramm
  163.     32kB lokale Daten pro Unterprogramm (Stackframe)
  164.     32kB pro Common (eigentlich 64kB, aber die Adresse
  165.                     des letzten Feldes muss <32k sein)
  166.     700  Unterprogramme pro Datei
  167.     500  Verschiedene Commons pro Datei.
  168.  
  169. Daneben gibt es eine Reihe von Beschraenkungen, die bei
  170. unvernuenftig grossen Unterprogrammen zu Fehlermeldungen
  171. fuehren, meistens waere dann aber ohnehin die 32kB Code
  172. Grenze ueberschritten.
  173.  
  174.  
  175. Linker
  176. ------
  177.  
  178. Der Linker wird gestartet mit:
  179.  
  180.     BCL [-Optionen...] Datei...
  181.  
  182. Enthaelt Datei keinen Punkt, so wird .B angehaengt.
  183. Die Programmdatei wird mit dem Namen der ersten Datei,
  184. aber mit .EXE statt .B, gespeichert.
  185. Es muss auch die Datei LIB.B aufgefuehrt werden, um die
  186. Standartfunktionen und die I/O-Routinen zum Programm
  187. dazu zu linken.
  188.  
  189. Beispiel:
  190.  
  191.     BCL -S16 TEST SUB LIB
  192.  
  193. oder
  194.  
  195.     BCL -S16 TEST.B SUB.B LIB.B
  196.  
  197. Linkt die Dateien TEST.B und SUB.B und speichert unter
  198. TEST.EXE das lauffaehige Programm, das eine Stackgroesse
  199. von 16kB verwendet.
  200.  
  201.  
  202. Linker Optionen
  203. ---------------
  204.  
  205.     -Sn     Stackgroesse fuer das zu erzeugende Programm
  206.                 wird auf n kB gesetzt (max. 64). Fehlt
  207.                 diese Option, so wird ein 64kB grosser
  208.                 Stack angenommen. Auf dem Stack werden
  209.                 alle lokalen Variablen/Felder einer
  210.                 Unterprogrammverschachtelung abgelegt.
  211.  
  212.     -O      Optimiertes Linken: nirgends aufgerufene
  213.                 Unterprogramme werden weggelassen.
  214.  
  215.     -P      Protokoll: Liste der Commonbloecke und
  216.                 Programmmodule.
  217.  
  218.  
  219.  
  220. Beschraenkungen
  221. ---------------
  222.  
  223. Die wichtigste Beschraenkung liegt in der RAM Groesse: die
  224. zu erzeugende Programmdatei (ohne Commons und Stack)
  225. kann maximal so gross sein, wie der groesste freie
  226. Speicherblock nach Laden von BCL. Andererseits kann, bei
  227. grossen Commons und Stack, auch ein Programm erzeugt
  228. werden, dass im vorhandenen RAM nicht gestartet werden
  229. kann.
  230.  
  231. Die Anzahl Unterprogramme ist auf 3000, die Anzahl
  232. Commonbloecke auf 1500 beschraenkt. (Die laecherliche
  233. 640kB Begrenzung von MS-DOS duerfte davor greifen.)
  234.  
  235.  
  236. Laufzeitsystem
  237. --------------
  238.  
  239. Das Laufzeitsystem BCRTSY.EXE enthaelt Routinen, die von
  240. einem FORTRAN77 Programm benoetigt werden und muss vor
  241. dem Programmstart resident geladen sein.
  242.  
  243. BCRTSY enthaelt:
  244.  
  245.     Arithmetikroutinen:
  246.         32 bit INTEGER Multiplikation/Division
  247.         REAL Arithmetik
  248.         DOUBLE PRECISION Arithmetik
  249.         Es wird das IEEE Gleitkommaformat verwendet,
  250.         REAL: 7 Dezimalstellen, 32 bit
  251.          1 bit Vorzeichen, 8 bit Exp., 24 bit Mantisse.
  252.         DOUBLE PRECISION: 14 Dezimalstellen, 64 bit
  253.          1 bit Vorzeichen, 11 bit Exp., 52 bit Mantisse.
  254.         Ein mathematischer Koprozessor wird nicht
  255.           unterstuetzt. (Eine 80x87/version exisiert,
  256.       kann jedoch nicht getestet werden, da ich
  257.       nicht ueber entsprechende Hardware verfuege.)
  258.  
  259.     CHARACTER Routinen
  260.  
  261.     Debugger:
  262.         Ein einfacher Debugger zur Fehlersuche.
  263.         Nach einem Laufzeitfehler wird von ihm eine
  264.         Fehlermeldung ausgegeben und Eingabe erwartet.
  265.         Der Debugger kann aber auch durch Druecken einer
  266.         Taste aktiviert werden, um den Programmlauf zu
  267.         unterbrechen, wenn das Programm mit B-Option
  268.         uebersetzt wurde. Folgende Tasten erkennt der
  269.         Debugger als Kommando:
  270.  
  271.             T   (Traceback) Rueckverfolgung des Subroutine-Call
  272.                 Stacks, Ausgabe der naechsthoeheren Progunit
  273.                 Mit Zeilennummern, falls -L Option beim
  274.                 Compilieren verwendet wurde.
  275.  
  276.         U   (Untrace) Macht alle Tracebackaktionen
  277.         rueckgaengig. Dies geschieht auch implizit
  278.         bevor der Programmlauf fortgesetzt wird.
  279.  
  280.             V   Variablen des aktuellen Unterprogramms
  281.                 mit aktuellen Inhalten, falls mit -V
  282.                 Option uebersetzt wurde.
  283.                 Bezieht sich auf auf die zuletzt angezeigte
  284.         Prog.unit, falls T gedrueckt wurde.
  285.  
  286.             Z   Programm beenden.
  287.  
  288.             Leertaste  Weiterrechnen, falls kein Lauf-
  289.                 zeitfehler auftrat.
  290.  
  291.             S   Programmschritt (bis zum naechsten
  292.                 Label, Unterprogramm, ELSE, ENDIF, DO).
  293.  
  294.             C   Unterprogrammschritt (bis zum naechsten
  295.                 CALL oder RETURN)
  296.  
  297.  
  298.  
  299. Bibliothek
  300. ----------
  301.  
  302. LIB.B enthaelt die mathematischen Funktionen im
  303. vollen vom Standard vorgeschriebenen Umfang.
  304. Wenn beim Linken Fehlermeldungen wie z.B.
  305.  
  306.     External nicht gefunden: f_SQRT
  307.  
  308. auftauchen, so muss die LIB.B beim Aufruf von BCL
  309. mit angegeben werden.
  310.  
  311.  
  312. Programmstart
  313. -------------
  314.  
  315. Eine von BCL erzeugte Programmdatei kann wie jedes
  316. andere Programm vom Desktop oder einer Shell aus
  317. gestartet werden.
  318.  
  319.  
  320. Fehlermeldungen
  321. ---------------
  322.  
  323. Die Fehlermeldungen von Compiler, Linker und
  324. Laufzeitsystem sollten, bis auf die folgende Ausnahme,
  325. selbsterklaerend sein. Die vollstaendige Auflistung (26
  326. Seiten im Handbuch der Vers.P) wuerde den Rahmen dieser
  327. Beschreibung sprengen.
  328.  
  329.    IO-Error: Nummer
  330.         Ein-/Ausgabefehler; kann abgefangen werden,
  331.         indem im IO-Statement der IOSTAT= Parameter
  332.         angegeben wird. Nummer ist derselbe Wert, der
  333.         auch in der IOSTAT Variable zurueckgegeben wird.
  334.  
  335.     Nummer
  336.  
  337.     -1   Dateiende.
  338.     -2   Dateiende inmitten eines Records.
  339.     1    Dateinummer bereits verwendet (OPEN).
  340.     2    Zu viele Dateien (OPEN). Max. 32 Dateien.
  341.     3    Dateiname zu lang (OPEN).Max. 31 Zeichen.
  342.     5    Dateinummer nicht eroeffnet. Nur die Nummern
  343.            5 und 6 koennen ohne OPEN verwendet werden.
  344.     6    Formatiert/unformatiert Widerspruch.
  345.     7    REC-Parameter fuer Datei mit ACCESS='SEQUENTIAL'
  346.     8    BACKSPACE, REWIND, ENDFILE fuer diese Datei
  347.          nicht moeglich (AUX: und PRN:).
  348.     10   Internal I/O nur formatiert.
  349.     20   INTEGER Ueberlauf bei Eingabe.
  350.     21   Datenfehler bein Listengesteuerter Eingabe,
  351.          z.B. fehlende Apostroph fuer Zeichenketten.
  352.     22   Unerwartetes Dateiende.
  353.     23   Record zu lang.
  354.     24   Lesefehler bei UNFORMATTED SEQUENTIAL.
  355.     30   Formatelement und I/O-Listelement passen nicht
  356.            zusammen.
  357.            INTEGER benoetigt ein I-Formatelement,
  358.            REAL, DOUBLE PRECISION (COMPLEX) ein (zwei)
  359.              F-, G-, E- oder D-Formatelemente,
  360.            LOGICAL ein L-Formatelement,
  361.            CHARACTER ein A-Formatelement.
  362.     31   Formatelement L: T oder F erwartet (Eingabe)
  363.     32   Formatelement I: unerwartetes Zeichen (Eingabe)
  364.            Leerzeichen, Vorzeichen und Ziffern erlaubt.
  365.     33   Formatelemente E, F oder D: unerwartetes
  366.            Zeichen (Eingabe).
  367.            Leerzeichen, Vorzeichen, Ziffern,
  368.            Dezimalpunkt, E, e, D oder d (fuer Exponent)
  369.            erlaubt.
  370.     34   Zu viele ( in Format.
  371.     35   Zu viele ) in Format.
  372.     36   Ziffernfolge an unerlaubter Stelle in Format.
  373.     37   Formatelement nicht erkannt.
  374.     38   . fehlt in F, E, G oder D Formatelement.
  375.     39   4Htext oder 'text' in Format fuer READ.
  376.            In FORTRAN66 konnte damit Text in ein Format
  377.            hineingelesen werden; in FORTRAN77 nicht
  378.            mehr erlaubt.
  379.     40   Exponent zu gross fuer gegebenes Format.
  380.     42   Formatelement zu lang. Max. Laenge des internen
  381.            Recordpuffers (80 Zeichen).
  382.     43   Internal I/O, Record zu lang.
  383.     44   TL, Record zu lang. Ist ein Record laenger als
  384.            der interne Recordpuffer, kann nicht mehr
  385.            nach links tabuliert werden.
  386.     45   Feldlaenge 0 bei I,L,F,E,G,D Formatelement.
  387.  
  388.     1000+n  MS-DOS Error n
  389.     1002    Datei nicht gefunden.
  390.     1003    Directorypfad nicht gefunden.
  391.     1004    Zu viele Dateien.
  392.     1005    Zugriff nicht erlaubt.
  393.     1008    Nicht genuegend RAM frei.
  394.     1012    Zugriff nicht moeglich.
  395.     1015    Ungueltige Laufwerksbezeichnung.
  396.  
  397.  
  398.  
  399.  
  400. Probleme
  401. --------
  402.  
  403. Die 80x87 Version ist nicht getestet und wird deshalb
  404. nicht mitgeliefert.
  405.  
  406. Fehler aller Art sollten auf jeden Fall schriftlich
  407. gemeldet werden.
  408.  
  409.  
  410.  
  411.